package com.anysoft.callback.rxjavahelper;


import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

/**
 * 自己的Observer，减少实现不必要的回调
 */
public abstract class RxObserver<T> implements Observer<T> {
    
    @Override
    public void onSubscribe(Disposable d) {
        _onSubscribe(d);
    }
    
    @Override
    public void onNext(T t) {
        _onNext(t);
    }
    
    @Override
    public void onError(Throwable e) {
        String errorMessage = e.getMessage();
//        if (!StringUtils.isNullOrEmpty(errorMessage)) {
//            if (errorMessage.contains("fail ")||errorMessage.contains("Fail ")) {
//                errorMessage = "请求失败";
//            } else if (errorMessage.contains("item is null")) {
//                errorMessage = "数据为空";
//            } else if (errorMessage.contains("connect timed out")){
//                errorMessage = "请求超时";
//            }
//        } else {
//            errorMessage = "数据为空";
//        }
        _onError(errorMessage);
    }
    
    @Override
    public void onComplete() {
        _onComplete();
    }
    
    public void _onSubscribe(Disposable d) {
        
    }
    
    public void _onComplete() {
    }
    
    //抽象方法，必须实现
    public abstract void _onNext(T t);
    
    public abstract void _onError(String errorMessage);
    
}